Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


docs/crypto.html HEAD (1e25a629) Text, 4.38 KB

Tff7b72<!doctype html>
Tb4b4b4<Tff7b72htmlTb4b4b4>
Tb4b4b4<Tff7b72headTb4b4b4>
Tb4b4b4<Tff7b72link Te6edf3relTff7b72=Ta5d6ff"stylesheet" Te6edf3hrefTff7b72=Ta5d6ff"css/water.css?v=6"Tb4b4b4>
Tb4b4b4<Tff7b72meta Te6edf3charsetTff7b72=Ta5d6ff"utf-8"Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72titleTb4b4b4>Reticulum NetworkTb4b4b4<Tb4b4b4/Tff7b72titleTb4b4b4>
Tb4b4b4<Tff7b72meta Te6edf3nameTff7b72=Ta5d6ff"viewport" Te6edf3contentTff7b72=Ta5d6ff"width=device-width, initial-scale=1.0"Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72headTb4b4b4>
Tb4b4b4<Tff7b72bodyTb4b4b4>
Tb4b4b4<Tff7b72centerTb4b4b4>
Tb4b4b4<Tff7b72pTb4b4b4>Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"top_menu lang_menu"Tb4b4b4>Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"./crypto_de.html"Tb4b4b4>DeutschTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> | Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"./crypto.html"Tb4b4b4>EnglishTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> | Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"./crypto_es.html"Tb4b4b4>EspañolTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> | Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"./crypto_nl.html"Tb4b4b4>NederlandsTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> | Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"./crypto_pl.html"Tb4b4b4>PolskiTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> | Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"./crypto_pt-br.html"Tb4b4b4>PortuguêsTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> | Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"./crypto_tr.html"Tb4b4b4>TürkçeTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> | Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"./crypto_uk.html"Tb4b4b4>УкраїнськаTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> | Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"./crypto_jp.html"Tb4b4b4>日本語Tb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> | Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"./crypto_zh-cn.html"Tb4b4b4>简体中文Tb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"top_menu"Tb4b4b4>Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"index.html"Tb4b4b4>ReticulumTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> | Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"start.html"Tb4b4b4>StartTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> | Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"hardware.html"Tb4b4b4>HardwareTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> | Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"connect.html"Tb4b4b4>ConnectTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> | Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"docs.html"Tb4b4b4>ManualTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> | Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"crypto.html"Tb4b4b4>CryptographyTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> | Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"credits.html"Tb4b4b4>CreditsTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> | Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"https://github.com/markqvist/reticulum"Tb4b4b4>SourceTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> | Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"donate.html"Tb4b4b4>DonateTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>Tb4b4b4<Tff7b72brTb4b4b4/Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72centerTb4b4b4>
Tb4b4b4<Tff7b72h1Tb4b4b4>Cryptographic PrimitivesTb4b4b4<Tb4b4b4/Tff7b72h1Tb4b4b4>
Tb4b4b4<Tff7b72pTb4b4b4>Reticulum uses a simple suite of efficient, strong and well-tested cryptographic primitives, with widely available implementations that can be used both on general-purpose CPUs and on microcontrollers.Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72pTb4b4b4>One of the primary considerations for choosing this particular set of primitives is that they can be implemented Tb4b4b4<Tff7b72emTb4b4b4>safelyTb4b4b4<Tb4b4b4/Tff7b72emTb4b4b4> with relatively few pitfalls, on practically all current computing platforms.Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72pTb4b4b4>The primitives listed here Tb4b4b4<Tff7b72strongTb4b4b4>are authoritativeTb4b4b4<Tb4b4b4/Tff7b72strongTb4b4b4>. Anything claiming to be Reticulum, but not using these exact primitives Tb4b4b4<Tff7b72strongTb4b4b4>is notTb4b4b4<Tb4b4b4/Tff7b72strongTb4b4b4> Reticulum, and possibly an intentionally compromised or weakened clone. The utilised primitives are:Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72ulTb4b4b4>
Tb4b4b4<Tff7b72liTb4b4b4>Ed25519 for signaturesTb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tff7b72liTb4b4b4>X22519 for ECDH key exchangesTb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tff7b72liTb4b4b4>HKDF for key derivationTb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tff7b72liTb4b4b4>AES-256 in CBC modeTb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tff7b72liTb4b4b4>HMAC-SHA256 for message authenticationTb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tff7b72liTb4b4b4>SHA-256Tb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tff7b72liTb4b4b4>SHA-512Tb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ulTb4b4b4>
Tb4b4b4<Tff7b72pTb4b4b4>In the default installation configuration, the Tb4b4b4<Tff7b72codeTb4b4b4>X25519Tb4b4b4<Tb4b4b4/Tff7b72codeTb4b4b4>, Tb4b4b4<Tff7b72codeTb4b4b4>Ed25519Tb4b4b4<Tb4b4b4/Tff7b72codeTb4b4b4> and Tb4b4b4<Tff7b72codeTb4b4b4>AES-256-CBCTb4b4b4<Tb4b4b4/Tff7b72codeTb4b4b4> primitives are provided by Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"https://www.openssl.org/"Tb4b4b4>OpenSSLTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> (via the Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"https://github.com/pyca/cryptography"Tb4b4b4>PyCA/cryptographyTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4> package). The hashing functions Tb4b4b4<Tff7b72codeTb4b4b4>SHA-256Tb4b4b4<Tb4b4b4/Tff7b72codeTb4b4b4> and Tb4b4b4<Tff7b72codeTb4b4b4>SHA-512Tb4b4b4<Tb4b4b4/Tff7b72codeTb4b4b4> are provided by the standard Python Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"https://docs.python.org/3/library/hashlib.html"Tb4b4b4>hashlibTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4>. The Tb4b4b4<Tff7b72codeTb4b4b4>HKDFTb4b4b4<Tb4b4b4/Tff7b72codeTb4b4b4>, Tb4b4b4<Tff7b72codeTb4b4b4>HMACTb4b4b4<Tb4b4b4/Tff7b72codeTb4b4b4>, Tb4b4b4<Tff7b72codeTb4b4b4>TokenTb4b4b4<Tb4b4b4/Tff7b72codeTb4b4b4> primitives, and the Tb4b4b4<Tff7b72codeTb4b4b4>PKCS7Tb4b4b4<Tb4b4b4/Tff7b72codeTb4b4b4> padding function are always provided by the following internal implementations:Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72ulTb4b4b4>
Tb4b4b4<Tff7b72liTb4b4b4>Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"https://github.com/markqvist/Reticulum/blob/master/RNS/Cryptography/HKDF.py"Tb4b4b4>HKDF.pyTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tff7b72liTb4b4b4>Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"https://github.com/markqvist/Reticulum/blob/master/RNS/Cryptography/HMAC.py"Tb4b4b4>HMAC.pyTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tff7b72liTb4b4b4>Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"https://github.com/markqvist/Reticulum/blob/master/RNS/Cryptography/Token.py"Tb4b4b4>Token.pyTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tff7b72liTb4b4b4>Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"https://github.com/markqvist/Reticulum/blob/master/RNS/Cryptography/PKCS7.py"Tb4b4b4>PKCS7.pyTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ulTb4b4b4>
Tb4b4b4<Tff7b72pTb4b4b4>Reticulum also includes a complete implementation of all necessary primitives in pure Python. If OpenSSL Te6edf3&amp; PyCA are not available on the system when Reticulum is started, Reticulum will instead use the internal pure-python primitives. A trivial consequence of this is performance, with the OpenSSL backend being Tb4b4b4<Tff7b72emTb4b4b4>muchTb4b4b4<Tb4b4b4/Tff7b72emTb4b4b4> faster. The most important consequence however, is the potential loss of security by using primitives that has not seen the same amount of scrutiny, testing and review as those from OpenSSL.Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72pTb4b4b4>If you want to use the internal pure-python primitives, it is Tb4b4b4<Tff7b72strongTb4b4b4>highly advisableTb4b4b4<Tb4b4b4/Tff7b72strongTb4b4b4> that you have a good understanding of the risks that this pose, and make an informed decision on whether those risks are acceptable to you.Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72pTb4b4b4>Reticulum is relatively young software, and should be considered as such. While it has been built with cryptography best-practices very foremost in mind, it Tb4b4b4<Tff7b72emTb4b4b4>has notTb4b4b4<Tb4b4b4/Tff7b72emTb4b4b4> been externally security audited, and there could very well be privacy or security breaking bugs. If you want to help out, or help sponsor an audit, please do get in touch.Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3alignTff7b72=Ta5d6ff"right"Tb4b4b4>Tb4b4b4<Tff7b72a Te6edf3hrefTff7b72=Ta5d6ff"credits.html"Tb4b4b4>Next Topic: Acknowledgements & CreditsTb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72bodyTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72htmlTb4b4b4>


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────